iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
Odoo

Odoo 14 Javascript 開發心路歷程系列 第 8

Day 8 extend() 介紹

  • 分享至 

  • xImage
  •  

這個在 widget.js 還沒有寫到,但應該可以看到很多地方都有這樣寫,

而這裡先講的原因是昨天有先講了 include(),且後續實作時也會用到,

兩者之間本質很像但也有些差異,今天會帶大家了解一下

extend() 就是根據目前當前物件的原型鍊,加上自己的並產生一個新的物件,因此 extend() 執行後會回傳物件,include() 則無

用 python 來看,您應該會比較理解一些

from odoo import models

class EmployeeAccount(models.Model):
		_name = 'employee.account'
		_inherit = 'res.users'

這樣是否比較清晰了呢?

因此 extend() 跟 include() 的使用時機大概如下

include() : 修改原本的處理流程,或是覆蓋原本的函式…等,會影響到所有使用到該 widget 的元件

extend() : 增加新的 widget,保有原本的處理流程...等,會影響到目前及之後有繼承自己的 widget

今天一樣不帶各位看底層了

有興趣可以自行尋找對應的程式,位置如下

// addons/web/static/src/js/core/class.js
// ...
OdooClass.extend = function() {
	// ...
}

上一篇
Day 7 include() 介紹
下一篇
Day 9 實作 2: 繼承各個生命週期階段
系列文
Odoo 14 Javascript 開發心路歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言